package leetcode; /**
 * description:
 * author:张腾
 * date:2021-07-18
 */

/**
 * 在一个由 '0' 和 '1' 组成的二维矩阵内，找到只包含 '1' 的最大正方形，并返回其面积。
 */
public class leetcode221 {
    public int maximalSquare(char[][] matrix) {
        int maxSide = 0;
        if (matrix==null || matrix.length==0 || matrix[0].length==0) return 0;

        int[][] dp = new int[matrix.length][matrix[0].length];
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                if (matrix[i][j]=='1'){
                    if (i==0 || j==0) dp[i][j] = 1;
                    else dp[i][j] = Math.min(Math.min(dp[i-1][j-1],dp[i-1][j]),dp[i][j-1])+1;

                    maxSide = Math.max(maxSide,dp[i][j]);
                }
            }
        }
        return maxSide*maxSide;
    }
}
